/* Copyright (c) 2004-2024 Peigen.info. All rights reserved. */

package info.peigen.hotpot.component.gateway.dianlan.protocol.passive;

import info.peigen.hotpot.component.gateway.dianlan.facade.enums.DianlanWaterCoolingUnitWorkingMode;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;
import lombok.experimental.SuperBuilder;

/**
 * <b>(DianlanWaterCoolingUnitStatusDataGram)</b>
 * <p>
 * 水冷机组状态报文
 * <pre>
 * 字节	位	名称	参数说明
 * 1	8-3	保留	保留
 *       2-1	机组工作模式	00关机模式01制冷模式10制热模式11水循环模式
 * 2	8-1	出水温度	分辨率： 1℃/bit  偏移量：-40℃ 255：无效
 * 3	8-1	回水温度	分辨率： 1℃/bit  偏移量：-40℃ 255：无效
 * 4	8-1	发送00	保留
 * 5	5.8-5.1	保留	保留
 * 6	8-1	机组需求实时功率低字节	分辨率：0.1Kw/bit   偏移量：0范围：0Kw~100.0Kw   类型：测量65535：无效
 * 7	8-1	机组需求实时功率高字节
 * 8	8-7	故障等级	00无故障01一级故障10二级故障11 三级故障一级故障等级最高，多种故障发生时，只发送最高等级。
 *       6-1	故障代码	0~63 具体故障码见下表定义
 * 故障码采用循环发送方式
 * </pre>
 *
 * @author LiDaHai
 * @version 1.0.0
 * @since 2023/1/12
 */
@SuperBuilder
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
@Accessors(chain = true)
public class DianlanWaterCoolingUnitStatusDataGram {
    /** 机组工作模式 */
    DianlanWaterCoolingUnitWorkingMode workingMode;
    /** 保留 */
    String                             reserve1;
    /** 出水温度 */
    Integer                            outletWaterTemperature;
    /** 回水温度 */
    Integer                            returnWaterTemperature;
    /** 保留-发送00 */
    String                             reserve2;
    /** 保留 */
    String                             reserve3;
    /** 机组需求实时功率低字节（Kw） */
    Double                             demandRealTimePowerLowByte;
    /** 机组需求实时功率高字节（Kw） */
    Double                             demandRealTimePowerHighByte;
    /** 故障代码 */
    String                             faultCode;
    /** 故障等级 */
    String                             faultLevel;

    public String toString() {
        return "机组工作模式：" + workingMode.getMessage() + "，" +
                "出水温度：" + outletWaterTemperature + "，" +
                "回水温度：" + returnWaterTemperature + "，" +
                "机组需求实时功率低字节：" + demandRealTimePowerLowByte + "，" +
                "机组需求实时功率高字节：" + demandRealTimePowerHighByte + "，" +
                "故障代码：" + faultCode + "，" +
                "故障等级：" + faultLevel;
    }
}